// @strict-types

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	//@skip-check property-return-type - ЕДТ не любит произвольный тип
	ПереданныйОтчет = Параметры.Отчет; // ДанныеФормыСтруктура
	
	Если ПереданныйОтчет = Неопределено Тогда
		КомпоновщикНастроек = Параметры.КомпоновщикНастроек;
		ТекущаяСтраница = Элементы.ГруппаСтраницаИсточникКомпоновщик;
	Иначе
		КопироватьДанныеФормы(ПереданныйОтчет, Отчет);
		Отчет.КомпоновщикНастроек.ПолучитьИсточникДоступныхНастроек();
		ТекущаяСтраница = Элементы.ГруппаСтраницаИсточникОтчет;
		ПриставкаЭлементов = "Отчет";
	КонецЕсли;
	
	СтраницыИсточников = Элементы.ГруппаСтраницыИсточникНастроек;
	СтраницыИсточников.ТекущаяСтраница = ТекущаяСтраница;
	СтраницыИсточников.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ПриставкаЭлементов = "Отчет" И Отчет.КомпоновщикНастроек.ПолучитьИсточникДоступныхНастроек() = Неопределено Тогда
		ПриОткрытииНаСервере();
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ПерейтиКОтчету(Элемент)
	
	ЭлементСтруктуры = ТекущийОбъектНастроек();
	НастройкиЭлемента =  КомпоновщикНастроек.Настройки.НастройкиЭлемента(ЭлементСтруктуры);
	ИдентификаторПоОбъекту = КомпоновщикНастроек.Настройки.ПолучитьИдентификаторПоОбъекту(НастройкиЭлемента);
	Элементы.КомпоновщикНастроекНастройки.ТекущаяСтрока = ИдентификаторПоОбъекту;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныеВыбранныеПоляПриИзменении(Элемент)
	
	Если ЛокальныеВыбранныеПоля Тогда
		
		Элементы.СтраницыПолейВыбора.ТекущаяСтраница = Элементы.НастройкиВыбранныхПолей;
			
	Иначе
		
		Элементы.СтраницыПолейВыбора.ТекущаяСтраница = Элементы.ОтключенныеНастройкиВыбранныхПолей;

		ЭлементСтруктуры = ТекущийОбъектНастроек();
		КомпоновщикНастроек.Настройки.ОчиститьВыборЭлемента(ЭлементСтруктуры);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныйОтборПриИзменении(Элемент)
	
	Если ЛокальныйОтбор Тогда
		
		Элементы.СтраницыОтбора.ТекущаяСтраница = Элементы.НастройкиОтбора;
			
	Иначе
		
		Элементы.СтраницыОтбора.ТекущаяСтраница = Элементы.ОтключенныеНастройкиОтбора;

		ЭлементСтруктуры = ТекущийОбъектНастроек();
		КомпоновщикНастроек.Настройки.ОчиститьОтборЭлемента(ЭлементСтруктуры);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныйПорядокПриИзменении(Элемент)
	
	Если ЛокальныйПорядок Тогда
		
		Элементы.СтраницыПорядка.ТекущаяСтраница = Элементы.НастройкиПорядка;
					
	Иначе
		
		Элементы.СтраницыПорядка.ТекущаяСтраница = Элементы.ОтключенныеНастройкиПорядка;
					
		ЭлементСтруктуры = ТекущийОбъектНастроек();
		КомпоновщикНастроек.Настройки.ОчиститьПорядокЭлемента(ЭлементСтруктуры);
		
	КонецЕсли;
				
КонецПроцедуры

&НаКлиенте
Процедура ЛокальноеУсловноеОформлениеПриИзменении(Элемент)

	Если ЛокальноеУсловноеОформление Тогда
		
		Элементы.СтраницыУсловногоОформления.ТекущаяСтраница = Элементы.НастройкиУсловногоОформления;
					
	Иначе
		
		Элементы.СтраницыУсловногоОформления.ТекущаяСтраница = Элементы.ОтключенныеНастройкиУсловногоОформления;
					
		ЭлементСтруктуры = ТекущийОбъектНастроек();
		КомпоновщикНастроек.Настройки.ОчиститьУсловноеОформлениеЭлемента(ЭлементСтруктуры);
					
	КонецЕсли;
				
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныеПараметрыВыводаПриИзменении(Элемент)
	
	Если ЛокальныеПараметрыВывода Тогда
		
		Элементы.СтраницыПараметровВывода.ТекущаяСтраница = Элементы.НастройкиПараметровВывода;
					
	Иначе
		
		Элементы.СтраницыПараметровВывода.ТекущаяСтраница = Элементы.ОтключенныеНастройкиПараметровВывода;
					
		ЭлементСтруктуры = ТекущийОбъектНастроек();
		КомпоновщикНастроек.Настройки.ОчиститьПараметрыВыводаЭлемента(ЭлементСтруктуры);
	КонецЕсли;
			
КонецПроцедуры
	
&НаКлиенте
Процедура ПерейтиКОтчетуФикс(Элемент)
	
	ЭлементСтруктуры = ТекущийОбъектФиксНастроек();
	НастройкиЭлемента = КомпоновщикНастроек.ФиксированныеНастройки.НастройкиЭлемента(ЭлементСтруктуры);
	Элементы.КомпоновщикНастроекНастройкиФикс.ТекущаяСтрока = 
		КомпоновщикНастроек.ФиксированныеНастройки.ПолучитьИдентификаторПоОбъекту(НастройкиЭлемента);
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныеВыбранныеПоляПриИзмененииФикс(Элемент)
	
	Если ЛокальныеВыбранныеПоляФикс Тогда
		
		Элементы.СтраницыПолейВыбораФикс.ТекущаяСтраница = Элементы.НастройкиВыбранныхПолейФикс;
			
	Иначе
		
		Элементы.СтраницыПолейВыбораФикс.ТекущаяСтраница = Элементы.ОтключенныеНастройкиВыбранныхПолейФикс;

		ЭлементСтруктурыФикс = ТекущийОбъектФиксНастроек();
		КомпоновщикНастроек.ФиксированныеНастройки.ОчиститьВыборЭлемента(ЭлементСтруктурыФикс);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныйОтборПриИзмененииФикс(Элемент)
	
	Если ЛокальныйОтборФикс Тогда
		
		Элементы.СтраницыОтбораФикс.ТекущаяСтраница = Элементы.НастройкиОтбораФикс;
			
	Иначе
		
		Элементы.СтраницыОтбораФикс.ТекущаяСтраница = Элементы.ОтключенныеНастройкиОтбораФикс;

		ЭлементСтруктурыФикс = ТекущийОбъектФиксНастроек();
		КомпоновщикНастроек.ФиксированныеНастройки.ОчиститьОтборЭлемента(ЭлементСтруктурыФикс);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныйПорядокПриИзмененииФикс(Элемент)
	
	Если ЛокальныйПорядокФикс Тогда
		
		Элементы.СтраницыПорядкаФикс.ТекущаяСтраница = Элементы.НастройкиПорядкаФикс;
					
	Иначе
		
		Элементы.СтраницыПорядкаФикс.ТекущаяСтраница = Элементы.ОтключенныеНастройкиПорядкаФикс;
					
		ЭлементСтруктурыФикс = ТекущийОбъектФиксНастроек();
		КомпоновщикНастроек.ФиксированныеНастройки.ОчиститьПорядокЭлемента(ЭлементСтруктурыФикс);
		
	КонецЕсли;
				
КонецПроцедуры

&НаКлиенте
Процедура ЛокальноеУсловноеОформлениеПриИзмененииФикс(Элемент)

	Если ЛокальноеУсловноеОформлениеФикс Тогда
		
		Элементы.СтраницыУсловногоОформленияФикс.ТекущаяСтраница = Элементы.НастройкиУсловногоОформленияФикс;
					
	Иначе
		
		Элементы.СтраницыУсловногоОформленияФикс.ТекущаяСтраница = Элементы.ОтключенныеНастройкиУсловногоОформленияФикс;
					
		ЭлементСтруктурыФикс = ТекущийОбъектФиксНастроек();
		КомпоновщикНастроек.ФиксированныеНастройки.ОчиститьУсловноеОформлениеЭлемента(ЭлементСтруктурыФикс);
					
	КонецЕсли;
				
КонецПроцедуры

&НаКлиенте
Процедура ЛокальныеПараметрыВыводаПриИзмененииФикс(Элемент)
	
	Если ЛокальныеПараметрыВыводаФикс Тогда
		
		Элементы.СтраницыПараметровВыводаФикс.ТекущаяСтраница = Элементы.НастройкиПараметровВыводаФикс;
					
	Иначе
		
		Элементы.СтраницыПараметровВыводаФикс.ТекущаяСтраница = Элементы.ОтключенныеНастройкиПараметровВыводаФикс;
					
		ЭлементСтруктурыФикс = ТекущийОбъектФиксНастроек();
		КомпоновщикНастроек.ФиксированныеНастройки.ОчиститьПараметрыВыводаЭлемента(ЭлементСтруктурыФикс);
	КонецЕсли;
			
КонецПроцедуры
	
#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройки

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииПоля(Элемент)
	
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоля();
	
КонецПроцедуры

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииСтроки(Элемент)
	
	ЭлементСтруктуры = ТекущийОбъектНастроек();
	ТипЭлемента = ТипЗнч(ЭлементСтруктуры); 
	
	Если ТипЭлемента = Неопределено  ИЛИ
		 ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") ИЛИ
		 ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
		 
		ПоляГруппировкиНедоступны();
		ВыбранныеПоляНедоступны();
		ОтборНедоступен();
		ПорядокНедоступен();
		УсловноеОформлениеНедоступно();
		ПараметрыВыводаНедоступны();
		
	ИначеЕсли ТипЭлемента = Тип("НастройкиКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступны();
		
		ЛокальныеВыбранныеПоля = Истина;
		Элементы.ЛокальныеВыбранныеПоля.ТолькоПросмотр = Истина;
		Элементы.СтраницыПолейВыбора.ТекущаяСтраница = Элементы.НастройкиВыбранныхПолей;
		
		ЛокальныйОтбор = Истина;
		Элементы.ЛокальныйОтбор.ТолькоПросмотр = Истина;
		Элементы.СтраницыОтбора.ТекущаяСтраница = Элементы.НастройкиОтбора;
		
		ЛокальныйПорядок = Истина;
		Элементы.ЛокальныйПорядок.ТолькоПросмотр = Истина;
		Элементы.СтраницыПорядка.ТекущаяСтраница = Элементы.НастройкиПорядка;
		
		ЛокальноеУсловноеОформление = Истина;
		Элементы.ЛокальноеУсловноеОформление.ТолькоПросмотр = Истина;
		Элементы.СтраницыУсловногоОформления.ТекущаяСтраница = Элементы.НастройкиУсловногоОформления;
		
		ЛокальныеПараметрыВывода = Истина;
		Элементы.ЛокальныеПараметрыВывода.ТолькоПросмотр = Истина;
		Элементы.СтраницыПараметровВывода.ТекущаяСтраница = Элементы.НастройкиПараметровВывода;
		
	ИначеЕсли ТипЭлемента = Тип("ГруппировкаКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("ГруппировкаТаблицыКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
		 
		Элементы.СтраницыПолейГруппировки.ТекущаяСтраница = Элементы.НастройкиПолейГруппировки;
			
		ВыбранныеПоляДоступны(ЭлементСтруктуры);
		ОтборДоступен(ЭлементСтруктуры);
		ПорядокДоступен(ЭлементСтруктуры);
		УсловноеОформлениеДоступно(ЭлементСтруктуры);
		ПараметрыВыводаДоступны(ЭлементСтруктуры);
		
	ИначеЕсли ТипЭлемента = Тип("ТаблицаКомпоновкиДанных") ИЛИ
		      ТипЭлемента = Тип("ДиаграммаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступны();
		ВыбранныеПоляДоступны(ЭлементСтруктуры);
		ОтборНедоступен();
		ПорядокНедоступен();
		УсловноеОформлениеДоступно(ЭлементСтруктуры);
		ПараметрыВыводаДоступны(ЭлементСтруктуры);
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройкиОтчет

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиОтчетПриАктивизацииПоля(Элемент)
	
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоля();
	
КонецПроцедуры

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиОтчетПриАктивизацииСтроки(Элемент)
	
	ОбработчикКомпоновщикНастроекНастройкиОтчетПриАктивизацииСтроки();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройкиФикс

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииПоляФикс(Элемент)
		
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоляФикс();
	
КонецПроцедуры

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииСтрокиФикс(Элемент)
	
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииСтрокиФикс();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройкиФиксОтчет

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииПоляФиксОтчет(Элемент)
		
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоляФикс();
	
КонецПроцедуры

&НаКлиенте
Процедура КомпоновщикНастроекНастройкиПриАктивизацииСтрокиФиксОтчет(Элемент)
	
	ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииСтрокиФикс();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы
 
&НаКлиенте
Процедура ПрименитьИзменения(Команда)
	
	Закрыть(Новый Структура("ЗначениеРеквизита", КомпоновщикНастроек()));
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Общее

&НаСервере
Процедура ПриОткрытииНаСервере()
	
	АдресСКД = ПоместитьВоВременноеХранилище(
		РеквизитФормыВЗначение("Отчет").СхемаКомпоновкиДанных, 
		УникальныйИдентификатор);

	Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД));
	
КонецПроцедуры

// Элемент формы с учетом текущей страницы (или из компоновщика или из отчета)
// 
// Параметры:
//  ИмяЭлемента - Строка
// 
// Возвращаемое значение:
//  ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы, Неопределено -
&НаКлиенте
Функция ЭлементФормы(Знач ИмяЭлемента)
	
	ИмяЭлемента = ИмяЭлемента(ИмяЭлемента);
	Возврат Элементы.Найти(ИмяЭлемента);
	
КонецФункции

// Возвращает имя элемента с учетом текущей страницы (или из компоновщика или из отчета)
// 
// Параметры:
//  ИмяЭлемента - Строка
// 
// Возвращаемое значение:
//  Строка
&НаКлиенте
Функция ИмяЭлемента(ИмяЭлемента)
	
	Возврат ИмяЭлемента + ПриставкаЭлементов;
	
КонецФункции

// Установить свойство элемента.
// 
// Параметры:
//  ИмяЭлемента - Строка
//  ИмяСвойство - Строка
//  Значение - Произвольный
&НаКлиенте
Процедура УстановитьСвойствоЭлемента(ИмяЭлемента, ИмяСвойство, Значение)
	
	Элемент = ЭлементФормы(ИмяЭлемента);
	Если Элемент[ИмяСвойство] <> Значение Тогда
		Элемент[ИмяСвойство] = Значение;
	КонецЕсли;
	
КонецПроцедуры

// Компоновщик настроек с учетом текущей страницы (или из компоновщика или из отчета)
// 
// Возвращаемое значение:
//  КомпоновщикНастроекКомпоновкиДанных
&НаКлиенте
Функция КомпоновщикНастроек()
	
	Если ПриставкаЭлементов = "Отчет" Тогда
		//@skip-check bsl-legacy-check-dynamic-feature-access - шта?
		Возврат Отчет.КомпоновщикНастроек;
	Иначе
		Возврат КомпоновщикНастроек;
	КонецЕсли;
	
КонецФункции

// Установить текущую страницу элемента.
// 
// Параметры:
//  ИмяЭлемента - Строка
//  ИмяСтраницы - Строка
&НаКлиенте
Процедура УстановитьТекущуюСтраницуЭлемента(ИмяЭлемента, ИмяСтраницы)
	
	УстановитьСвойствоЭлемента(ИмяЭлемента, "ТекущаяСтраница", ЭлементФормы(ИмяСтраницы));
	
КонецПроцедуры

#КонецОбласти

#Область Настройки

&НаКлиенте
Процедура ОбработчикКомпоновщикНастроекНастройкиОтчетПриАктивизацииСтроки()
	
	ЭлементСтруктуры = ТекущийОбъектНастроек();
	ТипЭлемента = ТипЗнч(ЭлементСтруктуры); 
	
	Если ТипЭлемента = Неопределено  
		ИЛИ ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") 
		ИЛИ ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
		 
		ПоляГруппировкиНедоступны();
		ВыбранныеПоляНедоступны();
		ОтборНедоступен();
		ПорядокНедоступен();
		УсловноеОформлениеНедоступно();
		ПараметрыВыводаНедоступны();
		
	ИначеЕсли ТипЭлемента = Тип("НастройкиКомпоновкиДанных") 
		ИЛИ ТипЭлемента = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступны();
		
		ЛокальныеВыбранныеПоля = Истина;
		УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоля", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбора", "НастройкиВыбранныхПолей");
		
		ЛокальныйОтбор = Истина;
		УстановитьСвойствоЭлемента("ЛокальныйОтбор", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыОтбора", "НастройкиОтбора");
		
		ЛокальныйПорядок = Истина;
		УстановитьСвойствоЭлемента("ЛокальныйПорядок", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПорядка", "НастройкиПорядка");
		
		ЛокальноеУсловноеОформление = Истина;
		УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформление", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформления", "НастройкиУсловногоОформления");
		
		ЛокальныеПараметрыВывода = Истина;
		УстановитьСвойствоЭлемента("ЛокальныеПараметрыВывода", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВывода", "НастройкиПараметровВывода");
		
	ИначеЕсли ТипЭлемента = Тип("ГруппировкаКомпоновкиДанных") 
		ИЛИ ТипЭлемента = Тип("ГруппировкаТаблицыКомпоновкиДанных") 
		ИЛИ ТипЭлемента = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
		 
		УстановитьТекущуюСтраницуЭлемента("СтраницыПолейГруппировки", "НастройкиПолейГруппировки");
			
		ВыбранныеПоляДоступны(ЭлементСтруктуры);
		ОтборДоступен(ЭлементСтруктуры);
		ПорядокДоступен(ЭлементСтруктуры);
		УсловноеОформлениеДоступно(ЭлементСтруктуры);
		ПараметрыВыводаДоступны(ЭлементСтруктуры);
		
	ИначеЕсли ТипЭлемента = Тип("ТаблицаКомпоновкиДанных") 
		ИЛИ ТипЭлемента = Тип("ДиаграммаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступны();
		ВыбранныеПоляДоступны(ЭлементСтруктуры);
		ОтборНедоступен();
		ПорядокНедоступен();
		УсловноеОформлениеДоступно(ЭлементСтруктуры);
		ПараметрыВыводаДоступны(ЭлементСтруктуры);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоля()
		
	ИмяЭлемента = ЭлементФормы("КомпоновщикНастроекНастройки").ТекущийЭлемент.Имя;
	Если ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеВыбора") Тогда
		
		ВыбраннаяСтраница = "СтраницаПолейВыбора";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеОтбора") Тогда
		
		ВыбраннаяСтраница = "СтраницаОтбора";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеПорядка") Тогда
		
		ВыбраннаяСтраница = "СтраницаПорядка";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеУсловногоОформления") Тогда
		
		ВыбраннаяСтраница = "СтраницаУсловногоОформления";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеПараметровВывода") Тогда
		
		ВыбраннаяСтраница = "СтраницаПараметровВывода";
	
	Иначе
		
		Возврат;
		
	КонецЕсли;
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыНастроек", ВыбраннаяСтраница);
	
КонецПроцедуры

&НаКлиенте
Функция ТекущийОбъектНастроек()
	
	ТекущаяСтрока = ЭлементФормы("КомпоновщикНастроекНастройки").ТекущаяСтрока;
	//@skip-check invocation-parameter-type-intersect - это стандартный код, сгенерированный платформой
	Возврат КомпоновщикНастроек().Настройки.ПолучитьОбъектПоИдентификатору(ТекущаяСтрока);
	
КонецФункции

&НаКлиенте
Процедура ПоляГруппировкиНедоступны()
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейГруппировки", "НедоступныеНастройкиПолейГруппировки");
					
КонецПроцедуры

&НаКлиенте
Процедура ВыбранныеПоляДоступны(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().Настройки.НаличиеВыбораУЭлемента(ЭлементСтруктуры) Тогда
				
		ЛокальныеВыбранныеПоля = Истина;
		ВыбраннаяСтраница = "НастройкиВыбранныхПолей";
			
	Иначе
			
		ЛокальныеВыбранныеПоля = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиВыбранныхПолей";
			
	КонецЕсли;
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбора", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоля", "ТолькоПросмотр", Ложь);
					
КонецПроцедуры

&НаКлиенте
Процедура ВыбранныеПоляНедоступны()
	
	ЛокальныеВыбранныеПоля = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоля", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбора", "НедоступныеНастройкиВыбранныхПолей");
					
КонецПроцедуры

&НаКлиенте
Процедура ОтборДоступен(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().Настройки.НаличиеОтбораУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныйОтбор = Истина;
		ВыбраннаяСтраница = "НастройкиОтбора";
			
	Иначе
		
		ЛокальныйОтбор = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиОтбора";
			
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыОтбора", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныйОтбор", "ТолькоПросмотр", Ложь);
	
КонецПроцедуры
		
&НаКлиенте
Процедура ОтборНедоступен()
	
	ЛокальныйОтбор = Ложь;
	УстановитьТекущуюСтраницуЭлемента("СтраницыОтбора", "НедоступныеНастройкиОтбора");
	УстановитьСвойствоЭлемента("ЛокальныйОтбор", "ТолькоПросмотр", Истина);
		
КонецПроцедуры

&НаКлиенте
Процедура ПорядокДоступен(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().Настройки.НаличиеПорядкаУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныйПорядок = Истина;
		ВыбраннаяСтраница = "НастройкиПорядка";
					
	Иначе
		
		ЛокальныйПорядок = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиПорядка";
					
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыПорядка", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныйПорядок", "ТолькоПросмотр", Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура ПорядокНедоступен()
	
	ЛокальныйПорядок = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныйПорядок", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПорядка", "НедоступныеНастройкиПорядка");
		
КонецПроцедуры

&НаКлиенте
Процедура УсловноеОформлениеДоступно(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().Настройки.НаличиеУсловногоОформленияУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальноеУсловноеОформление = Истина;
		ВыбраннаяСтраница = "НастройкиУсловногоОформления";
					
	Иначе
		
		ЛокальноеУсловноеОформление = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиУсловногоОформления";
					
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформления", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформление", "ТолькоПросмотр", Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура УсловноеОформлениеНедоступно()
	
	ЛокальноеУсловноеОформление = Ложь;
	УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформление", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформления", "НедоступныеНастройкиУсловногоОформления");
		
КонецПроцедуры

&НаКлиенте
Процедура ПараметрыВыводаДоступны(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().Настройки.НаличиеПараметровВыводаУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныеПараметрыВывода = Истина;
		ВыбраннаяСтраница = "НастройкиПараметровВывода";
					
	Иначе
		
		ЛокальныеПараметрыВывода = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиПараметровВывода";
					
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВывода", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныеПараметрыВывода", "ТолькоПросмотр", Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура ПараметрыВыводаНедоступны()
	
	ЛокальныеПараметрыВывода = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныеПараметрыВывода", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВывода", "НедоступныеНастройкиПараметровВывода");
	
КонецПроцедуры

#КонецОбласти

#Область ФиксированныеНастройки

&НаКлиенте
Процедура ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииСтрокиФикс()
	
	ЭлементСтруктуры = ТекущийОбъектФиксНастроек();
	ТипЭлемента = ТипЗнч(ЭлементСтруктуры); 
	
	Если ТипЭлемента = Неопределено  ИЛИ
		 ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") ИЛИ
		 ТипЭлемента = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
		 
		ПоляГруппировкиНедоступныФикс();
		ВыбранныеПоляНедоступныФикс();
		ОтборНедоступенФикс();
		ПорядокНедоступенФикс();
		УсловноеОформлениеНедоступноФикс();
		ПараметрыВыводаНедоступныФикс();
		
	ИначеЕсли ТипЭлемента = Тип("НастройкиКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступныФикс();
		
		ЛокальныеВыбранныеПоляФикс = Истина;
		УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоляФикс", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбораФикс", "НастройкиВыбранныхПолейФикс");
		
		ЛокальныйОтборФикс = Истина;
		УстановитьСвойствоЭлемента("ЛокальныйОтборФикс", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыОтбораФикс", "НастройкиОтбораФикс");
		
		ЛокальныйПорядокФикс = Истина;
		УстановитьСвойствоЭлемента("ЛокальныйПорядокФикс", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПорядкаФикс", "НастройкиПорядкаФикс");
		
		ЛокальноеУсловноеОформлениеФикс = Истина;
		УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформлениеФикс", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформленияФикс", "НастройкиУсловногоОформленияФикс");
		
		ЛокальныеПараметрыВыводаФикс = Истина;
		УстановитьСвойствоЭлемента("ЛокальныеПараметрыВыводаФикс", "ТолькоПросмотр", Истина);
		УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВыводаФикс", "НастройкиПараметровВыводаФикс");
		
	ИначеЕсли ТипЭлемента = Тип("ГруппировкаКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("ГруппировкаТаблицыКомпоновкиДанных") ИЛИ
		 	  ТипЭлемента = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
		 
		УстановитьТекущуюСтраницуЭлемента("СтраницыПолейГруппировкиФикс", "НастройкиПолейГруппировкиФикс");
			
		ВыбранныеПоляДоступныФикс(ЭлементСтруктуры);
		ОтборДоступенФикс(ЭлементСтруктуры);
		ПорядокДоступенФикс(ЭлементСтруктуры);
		УсловноеОформлениеДоступноФикс(ЭлементСтруктуры);
		ПараметрыВыводаДоступныФикс(ЭлементСтруктуры);
		
	ИначеЕсли ТипЭлемента = Тип("ТаблицаКомпоновкиДанных") ИЛИ
		      ТипЭлемента = Тип("ДиаграммаКомпоновкиДанных") Тогда
		
		ПоляГруппировкиНедоступныФикс();
		ВыбранныеПоляДоступныФикс(ЭлементСтруктуры);
		ОтборНедоступенФикс();
		ПорядокНедоступенФикс();
		УсловноеОформлениеДоступноФикс(ЭлементСтруктуры);
		ПараметрыВыводаДоступныФикс(ЭлементСтруктуры);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработчикКомпоновщикНастроекНастройкиПриАктивизацииПоляФикс()
	
	ИмяЭлемента = ЭлементФормы("КомпоновщикНастроекНастройкиФикс").ТекущийЭлемент.Имя;
	
	Если ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеВыбораФикс") Тогда
		
		ВыбраннаяСтраница = "СтраницаПолейВыбораФикс";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеОтбораФикс") Тогда
		
		ВыбраннаяСтраница = "СтраницаОтбораФикс";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеПорядкаФикс") Тогда
		
		ВыбраннаяСтраница = "СтраницаПорядкаФикс";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеУсловногоОформленияФикс") Тогда
		
		ВыбраннаяСтраница = "СтраницаУсловногоОформленияФикс";
		
	ИначеЕсли ИмяЭлемента = ИмяЭлемента("КомпоновщикНастроекНастройкиНаличиеПараметровВыводаФикс") Тогда
		
		ВыбраннаяСтраница = "СтраницаПараметровВыводаФикс";
		
	Иначе
		
		Возврат;
		
	КонецЕсли;
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыФиксированныхНастроек", ВыбраннаяСтраница);
	
КонецПроцедуры

&НаКлиенте
Функция ТекущийОбъектФиксНастроек()
	
	ТекущаяСтрока = ЭлементФормы("КомпоновщикНастроекНастройкиФикс").ТекущаяСтрока;
	//@skip-check invocation-parameter-type-intersect - это стандартный код, сгенерированный платформой
	Возврат КомпоновщикНастроек().ФиксированныеНастройки.ПолучитьОбъектПоИдентификатору(ТекущаяСтрока);
	
КонецФункции

&НаКлиенте
Процедура ПоляГруппировкиНедоступныФикс()
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейГруппировкиФикс", "НедоступныеНастройкиПолейГруппировкиФикс");
					
КонецПроцедуры

&НаКлиенте
Процедура ВыбранныеПоляДоступныФикс(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().ФиксированныеНастройки.НаличиеВыбораУЭлемента(ЭлементСтруктуры) Тогда
				
		ЛокальныеВыбранныеПоляФикс = Истина;
		ВыбраннаяСтраница = "НастройкиВыбранныхПолейФикс";
			
	Иначе
			
		ЛокальныеВыбранныеПоляФикс = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиВыбранныхПолейФикс";
			
	КонецЕсли;
		
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбораФикс", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоляФикс", "ТолькоПросмотр", Ложь);
					
КонецПроцедуры

&НаКлиенте
Процедура ВыбранныеПоляНедоступныФикс()
	
	ЛокальныеВыбранныеПоляФикс = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныеВыбранныеПоляФикс", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПолейВыбораФикс", "НедоступныеНастройкиВыбранныхПолейФикс");
					
КонецПроцедуры

&НаКлиенте
Процедура ОтборДоступенФикс(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().ФиксированныеНастройки.НаличиеОтбораУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныйОтборФикс = Истина;
		ВыбраннаяСтраница = "НастройкиОтбораФикс";
			
	Иначе
		
		ЛокальныйОтборФикс = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиОтбораФикс";
			
	КонецЕсли;
	
	УстановитьТекущуюСтраницуЭлемента("СтраницыОтбораФикс", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныйОтборФикс", "ТолькоПросмотр", Ложь);
	
КонецПроцедуры
		
&НаКлиенте
Процедура ОтборНедоступенФикс()
	
	ЛокальныйОтборФикс = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныйОтборФикс", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыОтбораФикс", "НедоступныеНастройкиОтбораФикс");
	
КонецПроцедуры

&НаКлиенте
Процедура ПорядокДоступенФикс(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().ФиксированныеНастройки.НаличиеПорядкаУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныйПорядокФикс = Истина;
		ВыбраннаяСтраница = "НастройкиПорядкаФикс";
					
	Иначе
		
		ЛокальныйПорядокФикс = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиПорядкаФикс";
					
	КонецЕсли;

	УстановитьТекущуюСтраницуЭлемента("СтраницыПорядкаФикс", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныйПорядокФикс", "ТолькоПросмотр", Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ПорядокНедоступенФикс()
	
	ЛокальныйПорядокФикс = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныйПорядокФикс", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПорядкаФикс", "НедоступныеНастройкиПорядкаФикс");
		
КонецПроцедуры

&НаКлиенте
Процедура УсловноеОформлениеДоступноФикс(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().ФиксированныеНастройки.НаличиеУсловногоОформленияУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальноеУсловноеОформлениеФикс = Истина;
		ВыбраннаяСтраница = "НастройкиУсловногоОформленияФикс";
					
	Иначе
		
		ЛокальноеУсловноеОформлениеФикс = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиУсловногоОформленияФикс";
					
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформленияФикс", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформлениеФикс", "ТолькоПросмотр", Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура УсловноеОформлениеНедоступноФикс()
	
	ЛокальноеУсловноеОформлениеФикс = Ложь;
	УстановитьСвойствоЭлемента("ЛокальноеУсловноеОформлениеФикс", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыУсловногоОформленияФикс", "НедоступныеНастройкиУсловногоОформленияФикс");
		
КонецПроцедуры

&НаКлиенте
Процедура ПараметрыВыводаДоступныФикс(ЭлементСтруктуры)
	
	Если КомпоновщикНастроек().ФиксированныеНастройки.НаличиеПараметровВыводаУЭлемента(ЭлементСтруктуры) Тогда
		
		ЛокальныеПараметрыВыводаФикс = Истина;
		ВыбраннаяСтраница = "НастройкиПараметровВыводаФикс";
					
	Иначе
		
		ЛокальныеПараметрыВыводаФикс = Ложь;
		ВыбраннаяСтраница = "ОтключенныеНастройкиПараметровВыводаФикс";
					
	КонецЕсли;
			
	УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВыводаФикс", ВыбраннаяСтраница);
	
	УстановитьСвойствоЭлемента("ЛокальныеПараметрыВыводаФикс", "ТолькоПросмотр", Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура ПараметрыВыводаНедоступныФикс()
	
	ЛокальныеПараметрыВыводаФикс = Ложь;
	УстановитьСвойствоЭлемента("ЛокальныеПараметрыВыводаФикс", "ТолькоПросмотр", Истина);
	УстановитьТекущуюСтраницуЭлемента("СтраницыПараметровВыводаФикс", "НедоступныеНастройкиПараметровВыводаФикс");
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти
